package GUI.manager.impl;

import java.util.List;

import core.manager.CategoriaFactory;
import core.manager.CategoriaManager;
import java.util.HashMap;

import core.manager.CarritoFactory;
import core.manager.CarritoManager;
import core.manager.EmpresaFactory;
import core.manager.EmpresaManager;
import core.manager.ListaFactory;
import core.manager.ListaManager;
import core.manager.ProductoFactory;
import core.manager.ProductoManager;
import core.manager.ProvinciaFactory;
import core.manager.ProvinciaManager;
import core.manager.SubcategoriaFactory;
import core.manager.SubcategoriaManager;
import core.manager.SugerenciaFactory;
import core.manager.SugerenciaManager;
import core.manager.UsuarioFactory;
import core.manager.UsuarioManager;
import core.model.Carrito;
import core.model.Categoria;
import core.model.Empresa;
import core.model.Lista;
import core.model.Producto;
import core.model.Provincia;
import core.model.Subcategoria;
import core.model.Sugerencia;

import core.model.Usuario;
import GUI.manager.VentanaManager;

/**
 * @author andoniibarguchilorenzo
 * clase que contiene los metodos de la interface VentanaManager implementados
 */
public class VentanaManagerImpl implements VentanaManager {

	UsuarioManager usuarioManager = UsuarioFactory.getInstance();
	ProductoManager productoManager = ProductoFactory.getInstance();
	ProvinciaManager provinciaManager = ProvinciaFactory.getInstance();
	CategoriaManager categoriaManager = CategoriaFactory.getInstance();
	SubcategoriaManager subcategoriaManager = SubcategoriaFactory.getInstance();
	EmpresaManager empresaManager = EmpresaFactory.getInstance();
	ListaManager listaManager=ListaFactory.getInstance();
	SugerenciaManager sugerenciaManager=SugerenciaFactory.getInstance();
	CarritoManager carritoManager = CarritoFactory.getInstance();
	
	@Override
	public void insertUser(Usuario usuario) {
		usuarioManager.insertUser(usuario);
	}

	@Override
	public void deleteUser(String nick) {
		usuarioManager.deleteUser(nick);
	}

	@Override
	public Producto findBy(String cod_producto) {
		return productoManager.findBy(cod_producto);
	}

	public int getCodigoProvincia(String nombre_provincia) {
		return provinciaManager.getCodigoProvincia(nombre_provincia);

	}

	public List<Provincia> getAll() {
		return provinciaManager.getAll();
	}

	public HashMap<String, String> getPasswords() {
		return usuarioManager.getPasswords();
	}

	@Override
	public List<Provincia> getAllProvincias() {
		return provinciaManager.getAllProvincias();
	}

	@Override
	public List<Categoria> getAllCategorias() {
		return categoriaManager.getAllCategorias();
	}

	@Override
	public List<Subcategoria> getAllSubcategorias() {
		return subcategoriaManager.getAllSubcategorias();
	}

	@Override
	public Subcategoria getSubcategoriaByCode(int cod_subcategoria) {
		return subcategoriaManager.getSubcategoriaByCode(cod_subcategoria);
	}

	@Override
	public Categoria getCategoriaByName(String nombre) {
		return categoriaManager.getCategoriaByName(nombre);
	}

	@Override
	public List<Categoria> getAllNombreCategorias() {
		return categoriaManager.getAllNombreCategorias();
	}

	@Override
	public List<Empresa> getEmpresas() {
		return empresaManager.getEmpresas();
	}

	@Override
	public Categoria getCategoriaByCode(int codigo_categoria) {
		return categoriaManager.getCategoriaByCode(codigo_categoria);
	}

	@Override
	public List<Subcategoria> getSubcategoriaByCodeCategoria(int cod_categoria) {
		return subcategoriaManager
				.getSubcategoriaByCodeCategoria(cod_categoria);
	}

	@Override
	public Usuario findUsuarioBy(String nick) {
		return usuarioManager.findBy(nick);
	}

	@Override
	public List<Empresa> findByCodigoProducto(String codigo_producto) {
		return empresaManager.findByCodigoProducto(codigo_producto);
	}

	@Override
	public Empresa findCodigoEmpresa(int codigo_empresa) {
		return empresaManager.findCodigoEmpresa(codigo_empresa);
	}

	@Override
	public Empresa findByNombreEmpresa(String nombre_empresa) {
		return empresaManager.findByNombreEmpresa(nombre_empresa);
	}

	@Override
	public Empresa findPrecio(int codigo_empresa, String codigo_producto) {
		return empresaManager.findPrecio(codigo_empresa, codigo_producto);
	}

	@Override
	public List<Producto> getAllProductos(int cod_subcategoria) {
		return productoManager.getAllProductos(cod_subcategoria);
	}

	@Override
	public Subcategoria getSubcategoriaByName(String nombre_subcategoria) {
		return subcategoriaManager.getSubcategoriaByName(nombre_subcategoria);
	}

	@Override
	public Producto findProductoByNombre(String nombre_producto) {
		return productoManager.findProductoByNombre(nombre_producto);
	}

	@Override
	public List<Lista> getallListas() {
		return listaManager.getListas();
	}

	@Override
	public List<Carrito> findByLista(int cod_lista) {
		return carritoManager.findByLista(cod_lista);
	}

	@Override
	public void deleteLista(int cod_lista) {
		listaManager.deleteLista(cod_lista);
	}


	@Override
	public void insertarSugerencia(Sugerencia sugerencia) {
		sugerenciaManager.insertarSugerencia(sugerencia);
	}


	@Override
	public void ModifyUsuario(Usuario user) {
		usuarioManager.modifyUsuario(user);
		
	}

	@Override
	public List<Sugerencia> getSugerenciasByCode(int cod_tipo) {
		return sugerenciaManager.getSugerenciasByCode(cod_tipo);
	}

	public Sugerencia getSugerencia(int cod_sugerencia){
		return sugerenciaManager.getSugerencia(cod_sugerencia);
	}

	@Override
	public void insertProducto(Producto producto) {
		productoManager.insertProducto(producto);
	}
	
	public void insertProductoSupermercado(int cod_empresa,
			String cod_producto, float precio)
	{
		productoManager.insertProductoSupermercado(cod_empresa, cod_producto, precio);
	}

	public void deleteSugerencia(int cod_sugerencia)
	{
		sugerenciaManager.deleteSugerencia(cod_sugerencia);
	}
	
	public void insertProductoLista(int cod_supermercado, String cod_producto, int cod_lista, int cantidad)
	{
		listaManager.insertProductoLista(cod_supermercado, cod_producto, cod_lista, cantidad);
	}
	
	public Lista findbyTitulo(String titulo_lista)
	{
		return listaManager.findbyTitulo(titulo_lista);
	}
	
	public void insertLista(Lista lista)
	{
		listaManager.insertLista(lista);
	}

	@Override
	public int getCodigo(String nombre_lista) {
		return listaManager.getCodigo(nombre_lista);
	}

}
